Skip to content

Record and Analyze Sat Scan Features#44

Merged
hunterhubble merged 2 commits into
HubbleNetwork:mainfrom
hunterhubble:sat-scan-improve
Jul 10, 2026
Merged

Record and Analyze Sat Scan Features#44
hunterhubble merged 2 commits into
HubbleNetwork:mainfrom
hunterhubble:sat-scan-improve

Conversation

@hunterhubble

Copy link
Copy Markdown
Contributor
  • Add --record option for hubblenetwork sat scan that saves a duration of
    IQ samples (10s default, 30s max) that are saved into a .npy file

  • Add --analyze option for hubblenetwork sat scan that provides a .txt file
    detailing the frequency, timing, and amplitude of each symbol of a decoded packet.
    (10s default, 30s max)

  • Also made some error handling into their own function to prevent duplicate code

  • Added tests to support new --analyze and --record
    sat scan functionalities.

Results of hubblenetwork sat scan --analyze 15 --output capture.txt

capture: 10 s @ 781250 Hz, center 2482.4404 MHz, 7812500 samples
decoded packets: 1

=== representative packet ===
  t=4.404s  channel 18  chipset nordic

PER-SYMBOL TIMING (duration, gap; drift = slot midpoint vs. ideal grid)
  Symbol  0: duration=8026.88 us, gap=774.40 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol  1: duration=8025.60 us, gap=773.12 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol  2: duration=8026.88 us, gap=774.40 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol  3: duration=8025.60 us, gap=773.12 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol  4: duration=8026.88 us, gap=774.40 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol  5: duration=8025.60 us, gap=773.12 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol  6: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=-0.64 us/sym
  Symbol  7: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol  8: duration=8026.88 us, gap=774.40 us, drift=+0.64 us, rate=+0.64 us/sym
  Symbol  9: duration=8025.60 us, gap=773.12 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol 10: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=-0.64 us/sym
  Symbol 11: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 12: duration=8026.88 us, gap=774.40 us, drift=+0.64 us, rate=+0.64 us/sym
  Symbol 13: duration=8025.60 us, gap=773.12 us, drift=+0.64 us, rate=+0.00 us/sym
  Symbol 14: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=-0.64 us/sym
  Symbol 15: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 16: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 17: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 18: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 19: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 20: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 21: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 22: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 23: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 24: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 25: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 26: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 27: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 28: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 29: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 30: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 31: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 32: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 33: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 34: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 35: duration=8026.88 us, gap=773.12 us, drift=+0.00 us, rate=+0.00 us/sym
  Symbol 36: duration=8026.88 us, drift=n/a
  Overall drift: +0.00 us (+0.00 us/symbol over 37 symbols)

PER-SYMBOL FREQUENCY / CHANNEL HOPPING
  hop sequence idx 3, start channel 18, expected channels [18, 4, 2]
  calibration: F0=211750.0 Hz, FSK step=488.1 Hz, channel width=31238.4 Hz
  channel spacing: 25878.9 Hz (device-table)
  Symbol  0: ch 18, freq=  242500.2 Hz  [ok]
  Symbol  1: ch 18, freq=  211750.0 Hz  [ok]
  Symbol  2: ch 18, freq=  242500.2 Hz  [ok]
  Symbol  3: ch 18, freq=  211750.0 Hz  [ok]
  Symbol  4: ch 18, freq=  242500.1 Hz  [ok]
  Symbol  5: ch 18, freq=  211750.0 Hz  [ok]
  Symbol  6: ch 18, freq=  242500.1 Hz  [ok]
  Symbol  7: ch 18, freq=  242500.1 Hz  [ok]
  Symbol  8: ch 18, freq=  213736.0 Hz  [ok]
  Symbol  9: ch 18, freq=  236129.3 Hz  [ok]
  Symbol 10: ch 18, freq=  225384.5 Hz  [ok]
  Symbol 11: ch 18, freq=  238624.1 Hz  [ok]
  Symbol 12: ch 18, freq=  224467.6 Hz  [ok]
  Symbol 13: ch 18, freq=  240091.6 Hz  [ok]
  Symbol 14: ch 18, freq=  240526.8 Hz  [ok]
  Symbol 15: ch 18, freq=  212748.6 Hz  [ok]
  Symbol 16: ch  4, freq= -135384.3 Hz  [ok]
  Symbol 17: ch  4, freq= -122249.8 Hz  [ok]
  Symbol 18: ch  4, freq= -126125.5 Hz  [ok]
  Symbol 19: ch  4, freq= -144730.5 Hz  [ok]
  Symbol 20: ch  4, freq= -137375.0 Hz  [ok]
  Symbol 21: ch  4, freq= -127125.0 Hz  [ok]
  Symbol 22: ch  4, freq= -146129.4 Hz  [ok]
  Symbol 23: ch  4, freq= -146129.4 Hz  [ok]
  Symbol 24: ch  4, freq= -147125.2 Hz  [ok]
  Symbol 25: ch  4, freq= -140757.3 Hz  [ok]
  Symbol 26: ch  4, freq= -126125.4 Hz  [ok]
  Symbol 27: ch  4, freq= -134908.4 Hz  [ok]
  Symbol 28: ch  4, freq= -122748.9 Hz  [ok]
  Symbol 29: ch  4, freq= -127125.0 Hz  [ok]
  Symbol 30: ch  4, freq= -144732.7 Hz  [ok]
  Symbol 31: ch  4, freq= -131500.3 Hz  [ok]
  Symbol 32: ch  2, freq= -187633.4 Hz  [ok]
  Symbol 33: ch  2, freq= -195499.5 Hz  [ok]
  Symbol 34: ch  2, freq= -191119.3 Hz  [ok]
  Symbol 35: ch  2, freq= -187632.8 Hz  [ok]
  Symbol 36: ch  2, freq= -190623.3 Hz  [ok]
  channel validation: PASS (37/37 symbols in window)

PER-SYMBOL AMPLITUDE (RMS dBFS; SNR above the inter-symbol noise floor)
  Symbol  0: amp=-28.81 dBFS, snr=29.35 dB
  Symbol  1: amp=-28.78 dBFS, snr=29.38 dB
  Symbol  2: amp=-28.82 dBFS, snr=29.34 dB
  Symbol  3: amp=-28.78 dBFS, snr=29.39 dB
  Symbol  4: amp=-28.81 dBFS, snr=29.35 dB
  Symbol  5: amp=-28.77 dBFS, snr=29.39 dB
  Symbol  6: amp=-28.81 dBFS, snr=29.36 dB
  Symbol  7: amp=-28.81 dBFS, snr=29.36 dB
  Symbol  8: amp=-28.76 dBFS, snr=29.40 dB
  Symbol  9: amp=-28.79 dBFS, snr=29.37 dB
  Symbol 10: amp=-28.78 dBFS, snr=29.38 dB
  Symbol 11: amp=-28.80 dBFS, snr=29.37 dB
  Symbol 12: amp=-28.78 dBFS, snr=29.39 dB
  Symbol 13: amp=-28.80 dBFS, snr=29.37 dB
  Symbol 14: amp=-28.80 dBFS, snr=29.37 dB
  Symbol 15: amp=-28.76 dBFS, snr=29.40 dB
  Symbol 16: amp=-28.70 dBFS, snr=29.46 dB
  Symbol 17: amp=-28.70 dBFS, snr=29.47 dB
  Symbol 18: amp=-28.70 dBFS, snr=29.47 dB
  Symbol 19: amp=-28.71 dBFS, snr=29.46 dB
  Symbol 20: amp=-28.70 dBFS, snr=29.47 dB
  Symbol 21: amp=-28.69 dBFS, snr=29.47 dB
  Symbol 22: amp=-28.70 dBFS, snr=29.46 dB
  Symbol 23: amp=-28.70 dBFS, snr=29.46 dB
  Symbol 24: amp=-28.70 dBFS, snr=29.46 dB
  Symbol 25: amp=-28.70 dBFS, snr=29.47 dB
  Symbol 26: amp=-28.69 dBFS, snr=29.47 dB
  Symbol 27: amp=-28.70 dBFS, snr=29.47 dB
  Symbol 28: amp=-28.69 dBFS, snr=29.47 dB
  Symbol 29: amp=-28.69 dBFS, snr=29.47 dB
  Symbol 30: amp=-28.70 dBFS, snr=29.47 dB
  Symbol 31: amp=-28.69 dBFS, snr=29.47 dB
  Symbol 32: amp=-28.73 dBFS, snr=29.44 dB
  Symbol 33: amp=-28.73 dBFS, snr=29.43 dB
  Symbol 34: amp=-28.73 dBFS, snr=29.43 dB
  Symbol 35: amp=-28.73 dBFS, snr=29.44 dB
  Symbol 36: amp=-28.73 dBFS, snr=29.43 dB
  summary: mean -28.74 dBFS, dropoff (p-p) 0.13 dB, noise floor -58.16 dBFS, SNR 29.42 dB

FREQUENCY / CHIPSET
  offset from center: -4619.2 Hz
  chipset (decoder): nordic
  synth-res: measured 488.1 Hz (chipset nominal 488.28125 Hz)

RS corrections: header_mean=0.0 pdu_mean=0.0 pdu_max=0

PER-PACKET (all packets)
  t=4.404s ch18 nordic: sym=8.0267ms gap=0.7733ms drift=0.0us amp=-28.74dBFS snr=29.42dB```

@hunterhubble hunterhubble changed the title Sat scan improve Record and Analyze Sat Scan Features Jul 9, 2026
Comment thread src/hubblenetwork/cli.py
Comment thread tests/test_sat.py
Comment thread src/hubblenetwork/cli.py Outdated
@hunterhubble hunterhubble force-pushed the sat-scan-improve branch 2 times, most recently from a348c8c to e496673 Compare July 10, 2026 23:39
- Add --record option for hubblenetwork sat scan that saves a duration of
IQ samples (10s default, 30s max) that are saved into a .npy file
- Add --analyze option for hubblenetwork sat scan that provides a .txt file
detailing the frequency, timing, and amplitude of each symbol of a decoded packet.
(10s default, 30s max)
- Also made some error handling into their own function to prevent duplicate code

Signed-off-by: Hunter Patchett <hunter@hubble.com>
- Added tests to support new --analyze and --record
sat scan functionalities.

Signed-off-by: Hunter Patchett <hunter@hubble.com>
@hunterhubble hunterhubble merged commit 9d92009 into HubbleNetwork:main Jul 10, 2026
2 checks passed
@hunterhubble hunterhubble deleted the sat-scan-improve branch July 10, 2026 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants